System and method for communicating game parameters utilizing separate protocols

ABSTRACT

The invention provides a client computer system, including at least one storage medium, at least one processor connected to the storage medium, and a set of instructions stored on the storage medium for execution by the processor, the set of instructions including a game having game parameters including a shared game environment, at least one game component, associated with each of a plurality of remote player computer systems, located in the shared game environment and being movable relative to the shared game environment utilizing the respective remote player computer system, game thresholds being reached as a result of movement of the game components relative to the shared game environment, and the player scores being updated when the game thresholds are reached, a first protocol generator to communicate at least a first of the game parameters over the network, and a second protocol generator to communicate at least a second of the game parameters over the network.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a Continuation of International Application No.:PCT/U.S.08/73759 filed Aug. 20, 2008 which claims priority from U.S.Provisional Patent Application No. 60/956,891 filed on Aug. 20, 2007,which is incorporated herein by reference in its entirety.

BACKGROUND OF THE INVENTION

1). Field of the Invention Aspects of the present invention relategenerally to a network system, and more specifically to a plug-in for abrowser and to multiplayer games.

2). Discussion of Related Art

The internet is often used for playing multiplayer games between playersat remote player computer systems. A shared game environment is oftenstored on a game server computer system and is downloadable for viewingat the respective remote player computer systems. Game components suchas characters, chess and other board game pieces, cards, etc. areassociated with the remote player computer systems. Player scores arestored at the game server computer system and are viewable at therespective remote player computer systems. The scores are updated whencertain game thresholds are reached, and a winner is usually declaredwhen a final game threshold is reached.

Browsers such as Internet Explorer®, Firefox®, and Netscape® may be usedfor viewing the shared game environment, game components, and scores.Browsers usually use a protocol for communicating over the internet,referred to as Hypertext Transfer Protocol (HTTP). HTTP is alow-fidelity, slow data protocol that does not allow for multicasting,heavy data compression, and latency-sensitive multiplayer action games.Certain plug-ins provide additional functionality for browsers. AdobeFlash®, for example, features support for vector and raster graphics, ascripting language called “ActionScript,” and bidirectional streaming ofaudio and video. However, these plug-ins still do not provide supportfor high-performance latency-sensitive multiplayer gaming over theinternet.

Another problem with multiplayer internet games is that parties often donot stay intact from one game to the next. Should members of a partywish to move from one game to the next, each player will separately haveto log off from the old game and separately log on to the new game. Some“seats” in the new game may be reserved by other players, so that someof the members of the party belonging to the old game may not haveaccess to the new game if seats to the new game are limited.

A further feature of existing multiplayer internet games is that a newplayer cannot be invited directly into a game. Instead, the new playeroften has to search for a game that is being played by friends oracquaintances and then has to go through a menu in order to enter thegame.

SUMMARY OF THE INVENTION

The invention provides a client computer system, including at least onestorage medium, at least one processor connected to the storage medium,and a set of instructions stored on the storage medium for execution bythe processor, the set of instructions including a game having gameparameters, a first protocol generator to communicate at least a firstof the game parameters over the network, and a second protocol generatorto communicate at least a second of the game parameters over thenetwork.

The game parameters may include a shared game environment, at least onegame component, associated with each of a plurality of remote playercomputer systems, located in the shared game environment and beingmovable relative to the shared game environment utilizing the respectiveremote player computer system, game thresholds being reached as a resultof movement of the game components relative to the shared gameenvironment, and the player scores being updated when the gamethresholds are reached.

The first protocol generator may generate one of a UDP or a TCP protocoland the second protocol generator may generate one of an HTML and anHTMLS protocol.

The client computer system may further include a browser residing on thestorage medium, the browser having a window for displaying components inthe signal, and a plug-in residing on the storage medium, the plug-inbeing utilized to enhance functionality of the browser.

The client computer system may further include a graphical applicationresiding on the storage medium, the graphical application utilizinggraphics acceleration to render graphics, wherein the plug-in mayenhance functionality of the browser by embedding the graphics renderedby the graphical application in the window of the browser.

Window management events generated for or by the browser may becommunicated with the graphical application.

User input events generated and tracked by the browser may becommunicated with the graphical application.

The client computer system may further include a first browser residingon the storage medium, the first browser having a view for displayingcomponents in the signal, and a first plug-in residing on the storagemedium, the first plug-in being utilized to enhance functionality of thefirst browser, wherein the first plug-in may enhance functionality ofthe first browser by communicating with a second remote computer systemover the network.

The first browser may have browser functionality and the plug-in mayplace a view of the shared game environment in the first browser, andthe game may have game functionality.

The first plug-in may enhance functionality of the first browser bycommunicating with the second plug-in on the second remote computersystem over the network, the second plug-in being utilized to enhancefunctionality of the second browser by communicating with the firstplug-in.

The client computer system may further include a three-dimensionalengine that may create a three-dimensional rendering of the shared gameenvironment and the game components.

The invention further provides a computer communications method,including receiving a signal from first and second remote computersystems over a network, the signal including components for display bythe remote computer receiving the signal, executing a game having gameparameters including a shared game environment displayed by the remoteplayer computer systems, at least one game component, associated witheach of a plurality of remote player computer systems, located in theshared game environment and being movable relative to the shared gameenvironment, utilizing the respective remote player computer system,game thresholds being reached as a result of movement of the gamecomponents relative to the shared game environment, and the playerscores being updated when the game thresholds are reached, utilizing afirst protocol to communicate at least a first of the game parametersover the network, and utilizing a second protocol to communicate atleast a second of the game parameters over the network.

The computer communications method may further include running a browserapplication residing on the second remote computer system, the browserhaving a view that displays components received in the signal, andutilizing a plug-in on the second remote computer system to enhancefunctionality of the browser.

The computer communications method may further include renderinggraphics with a graphical application residing on at least one of theremote computer systems, the graphical application utilizing graphicsacceleration to render graphics, and embedding the graphics rendered bythe graphical application in the window of the browser utilizing theplug-in.

The computer communications method may further include generating windowmanagement events for or by the browser, and communicating the windowmanagement events with the graphical application.

The computer communications method may further include tracking userinput events with the browser, and communicating the user input eventswith the graphical application.

The remote computer systems may be remote player computer systems,further including utilizing a plurality of remote player computersystems to move a plurality of game components associated with therespective player computers in a shared game environment displayed bythe respective remote player computer systems, storing a plurality ofplayer scores corresponding to the respective remote player computersystems, and updating the player scores as game thresholds are reachedas a result of movement of the game components relative to the sharedgame environment.

The computer communications method may further include storing theshared game environment on a game server computer system, transmittingthe shared game environment to the remote player computer systems,storing the player scores on the game server computer system, andtransmitting the player scores to the remote player computer systems.

The shared game environment may be a selected shared game environmentamong a plurality of shared game environments, further includinggenerating a game-specific URL, transmitting the game-specific URL to aselected one of the remote computer systems, and utilizing thegame-specific URL at the selected remote computer system to at leastview the selected game environment.

The computer communications method may further include storing aplurality of shared game environments on the game server computersystem, and associating a respective party comprising a respectivesubset of the remote player computer systems with each shared gameenvironment.

The computer communications method may further include selecting a partymove selector at one of the remote player computer systems associatedwith a first one of the parties and a first one of the shared gameenvironments, to transmit a party move signal from the respective remoteplayer computer system to the server computer system, and in response tothe party move signal, associating all the remote player computersystems associated with the first party in unison with a second one ofthe shared game environments.

The computer communications method may further include running a firstbrowser application residing on a first remote computer system, thefirst browser having a view that displays components received in thesignal, and utilizing a first plug-in on the first remote computersystem to enhance functionality of the browser, wherein the firstplug-in may enhance functionality of the first browser by communicatingwith a second remote computer system over the network.

The browser may have browser functionality and the plug-in may place aview of the shared game environment in the browser, and the game mayhave game functionality.

The computer communications method may further include running a secondbrowser application residing on a second remote computer system, thesecond browser having a view that displays components received in thesignal, and utilizing a second plug-in on the second remote computersystem to enhance functionality of the browser, wherein the firstplug-in may enhance functionality of the first browser by communicatingwith the second plug-in on the second remote computer system over thenetwork.

The shared game environment, the at least one game component, themovement of the at least one game component, the player scores, and thegame thresholds may be game parameters, further including utilizing afirst protocol to communicate at least a first of the game parametersover the network, and utilizing a second protocol to communicate atleast a second of the game parameters over the network.

The computer communications method may further include creating athree-dimensional rendering of the shared game environment and the gamecomponents.

The invention further provides a computer-readable medium having storedthereon a set of instructions which, when executed by a processor of acomputer, executes a communications method, including receiving a signalfrom first and second remote computer systems over a network, the signalincluding components for display by the remote computer receiving thesignal, executing a game having game parameters, including a shared gameenvironment displayed by the remote player computer systems, at leastone game component, associated with each of a plurality of remote playercomputer systems, located in the shared game environment and beingmovable relative to the shared game environment utilizing the respectiveremote player computer system, game thresholds being reached as a resultof movement of the game components relative to the shared gameenvironment, and the player scores being updated when the gamethresholds are reached, utilizing a first protocol to communicate atleast a first of the game parameters over the network, and utilizing asecond protocol to communicate at least a second of the game parametersover the network.

The invention further provides a network system, including a pluralityof remote player computer systems connected to a network, a signal beingtransmitted from a first to a second of the remote player computersystems over the network, the signal including components for display bythe remote player computer receiving the signal, a shared gameenvironment displayed by the remote player computer systems,

at least one game component associated with each remote player computersystem located in the shared game environment at each remote playercomputer system, and being movable relative to the shared gameenvironment utilizing the respective remote player computer system, aplurality of player scores stored on a computer system, each playerscore corresponding to a respective one of the remote player computersystems, game thresholds being reached as a result of movement of thegame components relative to the shared game environment, and the playerscores being updated when the game thresholds are reached, wherein theshared game environment, the at least one game component, the movementof the at least one game component, the player scores, and the gamethresholds are game parameters, a first protocol generator tocommunicate at least a first of the game parameters over the network,and a second protocol generator to communicate at least a second of thegame parameters over the network.

BRIEF DESCRIPTION OF THE DRAWINGS

The invention is further described by way of example with reference tothe accompanying drawings, wherein:

FIG. 1 is a block diagram of a network system as it relates to oneembodiment of the invention;

FIG. 2 is a block diagram of components residing on a game servercomputer system of the network system of FIG. 1;

FIG. 3 is a screenshot showing a browser and a view of a multiplayergame;

FIG. 4 is a block diagram showing the game server computer system andvarious components residing on one of a plurality of the remote playercomputer systems in FIG. 1;

FIG. 5 is a block diagram illustrating how a game is created, initiated,joined, and a how a party is moved from one game to the next;

FIG. 6 is a screenshot showing a view of a game lobby in FIG. 5;

FIG. 7 is a screenshot of a multiplayer game view that is displayed uponselection of a game;

FIG. 8 is a flowchart illustrating how a new user can be invited intoand can join a live game session; and

FIG. 9 is a block diagram of a machine in the form of a computer thatcan find application in the present invention system, in accordance withone embodiment of the invention.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1 of the accompanying drawings illustrates a network system 20 asit relates to one embodiment of the invention, including at least onenetwork in the form of the internet 22, a plurality of remote playercomputer systems 24A, 24B, and 24C, and a game server computer system 26connected to the internet 22. A signal can be transmitted from a firstof the remote player computer systems 24A to a second of the remoteplayer computer systems 24B over the internet 22. The signal includescomponents displayed by the remote player computer system 24B receivingthe signal. More specifically, in the embodiment of FIG. 1 having a gameserver computer system 26, the signal is first transmitted from thefirst remote player computer system 24A over the internet 22 to the gameserver computer system 26, the signal is then possibly converted by thegame server computer system 26, and is then transmitted from the gameserver computer system 26 over the internet 22 to the second remoteplayer computer system 24B, and is then received by the second remotecomputer system 24B. The remote player computer system 24A, 25B, or 24Cis also sometimes referred to as “the client computer system” herein.For purposes of expediency, transmission and reception is not describedin every instance herein, but it should be understood that acommunication will include at least one transaction that includestransmission and reception of a signal.

As shown in FIG. 2, the game server computer system 26 includes aplurality of components or modules stored thereon, including acommunication module 30A, a shared game environment 30B, a plurality ofgame components 30C, each associated with a respective one of the remoteplayer computer systems 24A, 24B, and 24C in FIG. 1, a plurality ofplayer scores 30D, each associated with a respective one of the remoteplayer computer systems 24A, 24B, and 24C in FIG. 1, a game logic module30E, a plurality of parties 30F, a party move module 30G, and a UniformResource Locator (URL) generator 30H.

The shared game environment 30B, the game components 30C, and the playerscores 30D are all stored on the game server computer system 26 and aretransmitted to the remote player computer systems 24A, 24B, and 24C inFIG. 1 via the communication module 30A. The communication module 30A isalso responsible for receiving signals from the remote player computersystems 24A, 24B, and 24C in FIG. 1 for processing at the game servercomputer system 26. The game logic module 30E controls functionality ofthe game, including setting and controlling thresholds that have to bereached for the player scores 30D to be updated.

The shared game environment 30B, plurality of game components 30C,plurality of player scores 30D, and game logic module 30E are allassociated with a single game 32A. A plurality of different games 32A,32B, and 32C are stored on the game server computer system 26. Each game32A, 32B, and 32C includes respective components similar to the sharedgame environment 30B, plurality of game components 30C, plurality ofplayer scores 30D, and game logic module 30E, but for different ones ofthe same type of game or for different types of games.

The parties 30F each include a respective subset of the remote playercomputer systems 24A, 24B, and 24C in FIG. 1. Each one of the parties30F is associated with a respective one of the shared game environments30B.

FIG. 3 illustrates a browser interface 34. The browser interface 34 may,for example, be an interface of Internet Explorer®, Firefox®, Netscape®,or any other browser. The browser interface 34 has an address box 36, aviewing pane 38, and various buttons such as back and forward buttons40. The browser is loaded on each one of the remote player computersystems 24A, 24B, and 24C in FIG. 1. A respective user at a respectiveone of the client computer systems 24A, 24B, or 24C can load the browserinterface 34 into memory. The browser interface 34 can be displayed on ascreen or a display of the client computer system 24A, 24B, or 24C.

The user enters an address in the address box 36. The user uses a mouseto move a cursor 42 into the address box 36, and then clicks a button onthe mouse. After clicking the button on the mouse, the user can use akeyboard to enter text into the address box 36. The user can press“Enter” on the keyboard. A command is sent over the internet 22 in FIG.1 requesting a page corresponding to the address that is entered intothe address box 36. The page is retrieved and transmitted to the clientcomputer system 24A, 24B, or 24C and is displayed within the viewingpane 38. An address can also be automatically entered in the address box36 and be transmitted due to an earlier or subsequent action by the useron the respective client computer system 24A, 24B, or 24C.

FIG. 3 also illustrates a view 43 of components of the game 32A in FIG.2 that are transmitted from the game server computer system 26,including the shared game environment 30B, the game components 30C, andthe player scores 30D. The view 43 also includes nicknames 44 of playerscorresponding to each one of the remote player computer systems 24A,24B, and 24C in FIG. 1. The nicknames 44 in the view 43 together formone of many parties among the parties 30F in FIG. 1, and the respectiveparty is associated with a respective game 32A in FIG. 1.

Each one of the game components 30C is also associated with each one ofthe remote player computer systems 24A, 24B, and 24C in FIG. 1. Aselected one of the nicknames 44, player scores 30D, and game components30C are also associated with the respective client computer system 24,e.g., the client computer system 24A, displaying the browser interface34. The respective user at the client computer system 24A can move theselected game component 30C by providing user input events utilizing amouse, keyboard, joystick, or other user interface device of the clientcomputer system 24A. The shared game environment 30B has a range ofperspectives that continues to change as the user moves the gamecomponent 30C through the shared game environment 30B.

A view such as the view 43 is displayed on displays of all the remoteplayer computer systems 24A, 24B, and 24C forming part of the respectiveparty 30F. A different one of the game components 30C is associated witha respective one of the remote player computer systems 24A, 24B, and24C, and can only be moved and controlled at the respective remoteplayer computer system 24A, 24B, or 24C to which it belongs. The viewthat is displayed at each remote player computer system 24A, 24B, and24C will include a different perspective of the same shared gameenvironment 30B.

The game logic module 30E in FIG. 1 detects and calculates whenpredefined game thresholds are reached, and updates the player scores30D when the game thresholds are reached. The game thresholds may, forexample, be reached when one of the game components 30C bumps anotherone of the game components 30C onto a lower level. The game logic module30E then updates one or more of the player scores 30D by, for example,increasing of the scores corresponding to the game component 30C thatbumped the other game component 30C onto a lower level. In the presentgame, the game is over after a clock 48 (forming part of the game logicmodule 30E in FIG. 2) has counted down to zero. The nickname 44 with thehighest player score 30D is then declared the winner (by the game logicmodule 30E in FIG. 2).

FIG. 4 illustrates the game server computer system 26 and componentsthat are installed on each one of the remote player computer systems24A, 24B, and 24C in FIG. 1, including an executable application in theform of a browser 50, an executable game application 52, and a plug-in54 for the browser 50.

The browser 50 has browser functionality and includes a webpage displaymodule 56A, an interface control display module 56B, and a user inputmodule 56C.

The webpage display module 56A includes the browser interface 34 that isdisplayed in FIG. 3 and is also responsible for displaying the view 43and the cursor 42 in FIG. 3.

The interface control display module 56B displays interface controlcomponents. Interface control components may, for example, be buttons,sliders, fields, etc. Interface control components may be used tocustomize and adjust settings of games.

The user input module 56C receives user input events from user interfacedevices. User input events may, for example, be a key press on akeyboard, a click on a button of a mouse, movement of a mouse in aselected direction, the click of a button on a game-specific user inputdevice such as a joystick, or movement of a movable component relativeto a base of a game-specific device, for example, movement of a handleof a joystick or rotation of a steering wheel.

The game application 52 has game functionality and includes athree-dimensional graphics engine 58A, a first protocol generator 58B,and a game environment and player control module 58C.

The three-dimensional graphics engine 58A is a high-speed graphicsengine that typically communicates with a graphics accelerator on agraphics card for purposes of rendering three-dimensional views at highspeed, as is required by advanced three-dimensional games. Thisthree-dimensional graphics engine 58A is responsible for generatingthree-dimensional views of the shared game environment 30B, gamecomponents 30C, and shadows in FIG. 3.

The game environment and player control module 58C includes some gamelogic in addition to the game logic residing in the game logic module30E in FIG. 2. The shared game environment and player control module 58Ccontrols certain aspects of the game environment and players that formpart of a single game.

The three-dimensional graphics engine 58A and the game environment andplayer control module 58C are both in communication with the firstprotocol generator 58B. The first protocol generator 58B communicateswith the game server computer system 26. The first protocol generator58B creates multi-client data connections. The first protocol generator58B may use a protocol such as Universal Datagram Protocol (UDP). UDP(or even Transmission Control Protocol (TCP)), when compared to HTTP, isa high-fidelity, fast data protocol that multicasts, allows for heavydata compression, and allows for latency-sensitive multiplayer actiongames in the browser 50. These features of the first protocol generator58B allow for fast communication between the three-dimensional graphicsengine 58A and the game server computer system 26. In anotherembodiment, the first protocol generator 58B may connect directly toother remote player computer systems in a peer-to-peer arrangement,rather than the server-based arrangement of FIG. 1.

The plug-in 54 has a number of modules that, alone and in combination,enhance functionality of the browser 50, including a game applicationgraphics display module 60A, a second protocol generator 60B, aforwarding module 60C, and a user input translator module 60D.

The game application graphics display module 60A connects thethree-dimensional graphics engine 58A to the web page display module56A. The game application graphics display module 60A displays the view43 in the viewing pane 38 of the browser interface 34 in FIG. 3.

The forwarding module 60C is connected to the interface control displaymodule 56B. The forwarding module 60C forwards customization andsettings from the interface control display module 56B to the gameenvironment and player control module 58C of the game application 52.The user input translator module 60D receives and translates the userinput events from the user input module 56C and forwards the translateduser input event to the game environment and player control module 58C.

The second protocol generator 60B is used to generate a low-fidelity,slow data protocol, compared to UDP, such as HTTP, that does notmulticast, does not use heavy data compression, or enablelatency-sensitive multiplayer action games in a browser. The secondprotocol generator 60B is used for communicating (transmit and/orreceive) data other than what is generated by the game application 52with the game server computer system 26. The second protocol generator60B may, for example, communicate a window management event, the clock48, player scores 30D, and nicknames 44 in FIG. 3 to and from the gameserver computer system 26. The data that is communicated through thesecond protocol generator 60B does not pass through the first protocolgenerator 58B, so that the first protocol generator 58B can be reservedfor communicating only data that is performance-sensitive. Data that isnot performance-sensitive is not communicated through the first protocolgenerator 58B so as not to reduce the performance of the first protocolgenerator 58B. Performance-sensitive data is not communicated throughthe second protocol generator 60B because of the inability of the secondprotocol generator 60B to effectively communicate high-performance data.

It can be seen how the plug-in 54 enhances functionality of the browser50 by displaying graphics rendered by the three-dimensional graphicsengine 58A of the game application to be viewed utilizing the web pagedisplay module 56A of the browser 50, by utilizing the user inputtranslator module 60D to translate user input events detected by theuser input module 56C to the game environment and player control module58C of the game application 52, by utilizing the forwarding module 60Cto forward customization and settings to the game application 52, and byproviding the second protocol generator 60B to communicate with the gameserver computer system 26.

What should also be noted is the interaction of webpagecomponents/controls with game components. For example, users can click abutton on the webpage, and seemlessly see changes in their game. As anexample, a web interface is provided that allows users to pick anindividual marble type from amongst many choices. The marble selectorinterface is done entirely on the with HTML, HTMLS CSS, or even Flash UIcomponents. When the user selects a marble, the webpage triggers ajavascript event that evokes a plug-in and passes along the appropriatemarble parameters, and the plug-in informs the game application toselect the appropriate marble, and the game then renders the correctmarble in-game. Similar systems for selecting tanks with different looksand gameplay attributes are provided through web interfaces. The samefunctionality for choosing levels for games through web interfaces, etccan also be provided.

For Windows®, for example, the plug-in 54 is an ActiveX controlconfigured to execute the external graphical application and pass it awindow handle to use when initializing its graphics context. To do thisin Windows®, the window handle “m_hWnd,” which is a data memberinherited through CWindowImpl, of the plug-in 54 is used as follows:

String args=ToString(“-window % d”,m_hWnd);

execute(exePath,workDir,args);

The result is then passed to the game application 52 on the command linewhen we start it using the standard Windows CreateProcess( ) function:

bool execute(Path exePath,Path workPath,String args)

 bool execute(Path exePath,Path workPath,String args) { // Definestandard environment variables String env =ToString(“SYSTEMROOT=%s%cSYSTEMDRIVE=%s%c\0”, getenv(“SYSTEMROOT”),‘\0’,getenv(“SYSTEMDRIVE”),‘\0’); // Command lineis full game path + args String command = exePath + “ ” + args; wchar_twcommand[1024]; mbstowcs(wcommand,command.c_str( ),sizeof(wcommand)); //Set the current working directory to the location of the exe wchar_twcwd[1024]; mbstowcs(wcwd,String(workPath).c_str( ),sizeof(wcwd));STARTUPINFO si; ZeroMemory(&si,sizeof(si)); si.cb = sizeof(si); return(CreateProcess(  0, // Application  wcommand, // Command line  0, //Process attributes  0, // Security attributes  false, // Inherit handles NORMAL_PRIORITY_CLASS,  (void*)env.c_str( ), // Environment vars. wcwd, // CWD  &si,  &_pi)); }

The data structure called “STARTUPINFO” above is for calling the gameapplication 52.

For the game application 52, what is required is to accept the commandline argument as a Windows HWND, use it to get the required size, andthen to initialize the required graphics context with it. Communicationwith the plug-in 54 is then embedded into the game application 52.

HWND parent = NULL; sscanf(lpCmdLine,“-window %d ”,&parent); if (!parent | | !IsWindow(parent) ) return 1; memset(&uMsg,0,sizeof(uMsg));winClass.lpszClassName = “MY_WINDOWS_CLASS”; winClass.cbSize  =sizeof(WNDCLASSEX); winClass.style =CS_HREDRAW | CS_VREDRAW;winClass.lpfnWndProc = WindowProc; winClass.hInstance  = hInstance;winClass.hIcon  = LoadIcon(hInstance,  (LPCTSTR)IDI_DIRECTX_ICON);WinClass.hIconSm  = LoadIcon(hInstance,  (LPCTSTR)IDI_DIRECTX_ICON);winClass.hCursor  = LoadCursor(NULL, IDC_ARROW); winClass.hbrBackground= (HBRUSH)GetStockObject(BLACK_BRUSH); winClass.lpszMenuName = NULL;winClass.cbClsExtra  = 0; winClass.cbWndExtra  = 0; if(!RegisterClassEx(&winClass) ) return 1; // Get our window size RECTrect; GetClientRect(parent,&rect); // create the window g_hWnd =CreateWindowEx( NULL, “MY_WINDOWS_CLASS”, “Direct3D (DX9) - Example”,WS_VISIBLE | WS_CLIPSIBLINGS  | WS_CLIPCHILDREN | WS_CHILDWINDOW, 0, 0,rect.right - rect.left, rect.bottom - rect.top, parent, NULL, hInstance,NULL);

Communication between the game application 52 and the plug-in 54 may beaccomplished using sockets, named pipes, or shared memory. When theplug-in 54 launches the game application 52, it passes information onthe command line to tell the game application 52 where and how toconnect back to the plug-in 54.

The plug-in 54 may, for example, set the port according to the followingprocedure:

String args=ToString(“-port % d”,m-port);

execute(exePath,workDir,args);

The result is passed on to the game application 52 on the command linewhen the standard Windows CreateProcess( ) function is initiated:

bool execute(Path exePath,Path workPath,String args) { // Definestandard environment variables String env =ToString(“SYSTEMROOT=%s%cSYSTEMDRIVE=%s%c\0”,getenv(“SYSTEMROOT”),‘\0’,getenv(“SYSTEMDRIVE”),‘\0’); // Command lineis full game path + args String command = exePath + “ ” + args; wchar_twcommand[1024]; mbstowcs(wcommand,command.c_str( ),sizeof(wcommand)); //Set the current working directory to the location of the exe wchar_twcwd[1024]; mbstowcs(wcwd,String(workPath).c_str( ),sizeof(wcwd));STARTUPINFO si; ZeroMemory(&si,sizeof(si)); si.cb = sizeof(si); return(CreateProcess( 0, // Application wcommand, // Command line 0, //Process attributes 0, // Security attributes false, // Inherit handlesNORMAL_PRIORITY_CLASS, (void*)env.c_str( ), // Environment vars. wcwd,// CWD &si, &_pi)); }

For the game application 52, what is then required is to accept thecommand line argument and use it when opening the connection to theplug-in 54.

unsigned int port=0;

sscanf(1pCmdLine, “-port % d”,&port);

ConnectToPlugin(port);

FIG. 5 is a block diagram that illustrates how a host or moderatorselects a game, invites players, and moves a party. FIG. 5 alsoillustrates how an anonymous user can join a game.

At block 70, the moderator creates a game lobby 72 shown in FIG. 6. Thegame lobby 72 is stored on the game server computer system 26 in FIG. 1,and is downloadable and viewable at each one of the remote playercomputer systems 24A, 24B, and 24C. FIG. 6 illustrates the game lobby 72after the moderator has downloaded the game lobby 72 from the gameserver computer system 26 onto, for example, the remote player computersystem 24A in FIG. 1.

Referring again to FIG. 5, at block 74, an anonymous user can discoverand attempt to join the game lobby 72 through a different interface (notshown). The game lobby 72 may be marked either “public” or “private” bythe moderator when creating the game lobby 72 at block 70. In the eventthat the game lobby 72 is marked “private,” the anonymous user fromblock 74 will, at block 76, be directed to an error page 78. Theanonymous user will thus not be allowed to enter the game lobby 72.Should the game lobby 72 be marked “public,” the anonymous user fromblock 74 will at block 76 be directed into the game lobby 72. In thismanner, the anonymous user will become a player and a member of a partyassociated with the game lobby 72. FIG. 6 shows the nicknames 44 of themember players belonging to the party associated with the particularlobby 72.

As represented by block 80 in FIG. 5, the game lobby 72 gives themoderator a number of options, including choosing a game, starting agame, and inviting others. The moderator from block 70 chooses the gamefirst and then starts the game, but it is possible for the moderator toinvite others at any stage, i.e., before choosing a game, after choosingthe game but before starting the game, or after a game is already inprogress.

As shown in FIG. 6, the lobby 72 includes a plurality of game icons 82that represent different games. At block 84 in FIG. 5, the moderatorselects one of the games by clicking on one of the game icons 82.

Before selecting one of the game icons 82, the game lobby 72 isdisplayed at the remote player computer systems 24A in FIG. 1 of all themembers of the party represented by the nicknames 44 in FIG. 6. FIG. 7shows a multiplayer game view 86 that replaces the game lobby 72 of FIG.6 upon selection of one of the game icons 82 in FIG. 6. The samemultiplayer game view 86 is displayed at each one of the remote playercomputer systems 24A in FIG. 1 corresponding to the nicknames 44 in thelobby 72 of FIG. 5 and the multiplayer game view 86 of FIG. 7. Themultiplayer game view 86 also includes a lobby selector 88 that themoderator can select to return to the game lobby 72 of FIG. 6.

The multiplayer game view 86 of FIG. 7 is thus an extension of the gamelobby 72 of FIG. 6.

As mentioned, the moderator can start the game at block 80 in FIG. 5.The multiplayer game view 86 of FIG. 7 includes a “play now” selector 90that is only displayed to the moderator and not to the other players.Upon selection of the “play now” selector 90, the view 43 of FIG. 3 isdisplayed at each one of the remote player computer systems 24A, 24B,and 24C in FIG. 1 corresponding to the nicknames 44 in FIGS. 6 and 7.Referring to FIGS. 3 and 5 in combination, the moderator has thusstarted a multiplayer game session, as represented by block 92.

The view 43 includes a “lobby” selector 94. If the moderator selects the“lobby” selector 94, the moderator will be returned to the game lobby 72shown in FIG. 5 and FIG. 6, from where the moderator can choose anothergame at block 80 in FIG. 5 and by selecting another one of the gameicons 82 in FIG. 6. Upon selection of the game, the moderator selects agame title and options at block 84, whereafter the moderator returns tothe game lobby 72 and starts the new game at block 80. Another game viewthat is different from the view 43 of FIG. 3 is then displayed at eachone of the remote player computer systems 24A in FIG. 1 corresponding tothe nicknames 44 in FIGS. 6 and 7 of the particular party. The actionsof the moderator have thus caused movement of the entire party from onegame to another game (see reference numerals 32A, 32B, and 32C in FIG.2) without adding or subtracting any members of the party. In anotherembodiment, members of the party can vote for new games and the entireparty will be moved from an old game to a new name, the new gamedepending on the outcome of the vote.

When moving the entire party in unison, there is no need for individualplayers to separately rejoin a new game. The entire party can thus bemoved in a fast and efficient manner. This feature is also useful ingames where a limited number of “seats” are available that can be takenup by players not belonging to the party of the old game, and thus blockcertain members of the party of the old game out of the new game.Friends and acquaintances can also remain in the same party from onegame to the next. As mentioned, the parties are stored on the gameserver computer system 26 in FIG. 1. Movement of parties from one gameto the next is also controlled by the game server computer system 26, inparticular, the party move module 30G of FIG. 2.

The game lobby 72 in FIG. 6 and the multiplayer game view 86 of FIG. 7both include a party chat area 95. The members of the party can sendmessages by typing in a text area 96, and so communicate back and forthwith one another. The members of the party may also communicate with oneanother utilizing voice over internet protocol (VoIP) to create aconference only between members of the party.

In the game lobby 72 of FIG. 6, the game icons 82 serve the dual purposeof being a game selector and a party move selector. In anotherembodiment, a party move selector may be separate from a game selectorand may be located in the game lobby 72 view, the multiplayer game view86 of FIG. 7, or the view 43 of FIG. 3.

Referring again to FIG. 5, the moderator at block 80 can also invitefriends or acquaintances by sending a URL at block 100. As shown inFIGS. 6 and 7, links 102 are selectable by the moderator for purposes ofsuch invitations. As further shown in FIG. 5, a friend or acquaintancecan accept an invitation at block 104. The invitation is typically inthe form of an e-mail that is transmitted from the game server computersystem 26 in FIG. 1 to one of the remote player computer systems 24,e.g., the player computer system 24B. The e-mail includes the URL thatis sent at block 100. The friend accepts the invitation by selecting theURL at block 104. Upon selection of the URL, the remote player computersystem 24B in FIG. 1 opens a browser and downloads the game lobby 72 inFIG. 5 and FIG. 6.

An invited user can alternatively enter the multiplayer game session 92directly instead of going through the game lobby 72, a feature of theinvention referred to as “deep linking” and represented by the lineconnecting block 104 directly to block 92 in FIG. 5.

FIG. 8 is a flowchart that illustrates how deep linking is accomplished.At block 110, a game session is created and at block 112, a live gamesession is initiated as hereinbefore described. Upon initiation of thelive game session, a game view such as the view 43 in FIG. 3 isdisplayed. At block 114, a user, typically the moderator, requests a URLfrom the game server computer system 26 in FIG. 1. The URL generator 30Hin FIG. 2 generates a URL at block 116 in FIG. 8, based on the uniquegame, live game session, and players in the game, encoding thisinformation into the URL for later decoding. The URL is then transmittedback to the user requesting the URL. A URL is also automatically createdwhen a game session is started and is transmitted to each player. Atblock 118, the user requesting the URL passes the URL onto an inviteduser. The URL may, for example, be e-mailed to the invited user. Atblock 120, the new, invited user clicks on the URL so that a browser isopened. The browser also utilizes the URL to direct the browser to thegame server computer system 26 in FIG. 1. The game server computersystem 26 compares the URL with the URL that was transmitted followingthe request at block 114 and, only upon a favorable comparison, proceedsto block 122. At block 122, the game server computer system 26 assigns anickname 44 and creates a game component for the new invited user. Thegame server computer system 26 then decodes the URL according to thegame session URL encoding algorithm, identifies the proper game sessionto join and directs the browser of the new invited user to the live gamesession at block 112. The browser of the new invited user then displaysa view that includes the shared game environment 30B of FIG. 3 and a newgame component 30C for the new invited user. The nicknames 44 and theplayer scores 30D are updated to include the nickname and score of thenew invited user.

The new invited user has thus automatically joined the game by simplyselecting the URL. There is thus no need for the new invited user tosearch for any games that friends or acquaintances are playing or forthe new user to click through a menu in order to access a selected game.

FIG. 9 shows a diagrammatic representation of a machine in the exemplaryform of a computer network system 900 within which a set ofinstructions, for causing the machine to perform any one or more of themethodologies discussed herein, may be executed. In alternativeembodiments, the machine operates as a standalone device or may beconnected (e.g., networked) to other machines. In a networkeddeployment, the machine may operate in the capacity of a server or aclient machine in a server-client network environment, or as a peermachine in a peer-to-peer (or distributed) network environment. Themachine may be a personal computer (PC), a tablet PC, a set-top box(STB), a Personal Digital Assistant (PDA), a cellular telephone, a webappliance, a network router, switch or bridge, or any machine capable ofexecuting a set of instructions (sequential or otherwise) that specifyactions to be taken by that machine. Further, while only a singlemachine is illustrated, the term “machine” shall also be taken toinclude any collection of machines that individually or jointly executea set (or multiple sets) of instructions to perform any one or more ofthe methodologies discussed herein.

The exemplary computer system 900 includes a processor 902 (e.g., acentral processing unit (CPU), a graphics processing unit (GPU) orboth), a main memory 904 (e.g., read-only memory (ROM), flash memory,dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) orRambus DRAM (RDRAM), etc.), and a static memory 906 (e.g., flash memory,static random access memory (SRAM), etc.), which communicate with eachother via a bus 908.

The computer system 900 may further include a video display 910 (e.g., aliquid crystal display (LCD) or a cathode ray tube (CRT)). The computersystem 900 also includes an alpha-numeric input device 912 (e.g., akeyboard), a cursor control device 914 (e.g., a mouse), a disk driveunit 916, a signal generation device 918 (e.g., a speaker), and anetwork interface device 920. Other game-specific user input devicessuch as a joystick or a steering wheel may also be connected to the bus908.

The disk drive unit 916 includes a machine-readable medium 922 on whichis stored one or more sets of instructions 924 (e.g., software)embodying any one or more of the methodologies or functions describedherein. The software may also reside, completely or at least partially,within the main memory 904 and/or within the processor 902 duringexecution or running thereof by the computer system 900, the main memory904 and the processor 902 also constituting machine-readable media.

The software may further be transmitted or received over a network 928via the network interface device 920.

While the machine-readable medium 924 is shown in an exemplaryembodiment to be a single medium, the term “machine-readable medium”should be taken to include a single medium or multiple media (e.g., acentralized or distributed database, and/or associated caches andservers) that store the one or more sets of instructions. The term“machine-readable medium” shall also be taken to include any medium thatis capable of storing, encoding, or carrying a set of instructions forexecution by the machine and that cause the machine to perform any oneor more of the methodologies of the present invention. The term“machine-readable medium” shall accordingly be taken to include, but notbe limited to, solid-state memories, optical and magnetic media, andcarrier wave signals.

While certain exemplary embodiments have been described and shown in theaccompanying drawings, it is to be understood that such embodiments aremerely illustrative and not restrictive of the current invention, andthat this invention is not restricted to the specific constructions andarrangements shown and described since modifications may occur to thoseordinarily skilled in the art.

1. A client computer system, comprising: at least one storage medium; atleast one processor connected to the storage medium; and a set ofinstructions stored on the storage medium for execution by theprocessor, the set of instructions including: a game having gameparameters; a first protocol generator to communicate at least a firstof the game parameters over the network; and a second protocol generatorto communicate at least a second of the game parameters over thenetwork.
 2. The client computer system of claim 1 wherein the gameparameters include a shared game environment, at least one gamecomponent, associated with each of a plurality of remote player computersystems, located in the shared game environment and being movablerelative to the shared game environment utilizing the respective remoteplayer computer system, game thresholds being reached as a result ofmovement of the game components relative to the shared game environment,and the player scores being updated when the game thresholds are reached3. The client computer system of claim 1 wherein the first protocolgenerator generates one of a UDP or a TCP protocol and the secondprotocol generator generates one of an HTML and an HTMLS protocol. 4.The client computer system of claim 1, further comprising: a browserresiding on the storage medium, the browser having a window fordisplaying components in the signal; and a plug-in residing on thestorage medium, the plug-in being utilized to enhance functionality ofthe browser.
 5. The client computer system of claim 4, furthercomprising a graphical application residing on the storage medium, thegraphical application utilizing graphics acceleration to rendergraphics, wherein the plug-in enhances functionality of the browser byembedding the graphics rendered by the graphical application in thewindow of the browser.
 6. The client computer system of claim 1, furthercomprising: a first browser residing on the storage medium, the firstbrowser having a view for displaying components in the signal; and afirst plug-in residing on the storage medium, the first plug-in beingutilized to enhance functionality of the first browser, wherein thefirst plug-in enhances functionality of the first browser bycommunicating with a second remote computer system over the network. 7.The client computer system of claim 1, wherein the first browser hasbrowser functionality and the plug-in places a view of the shared gameenvironment in the first browser, and the game has game functionality.8. The client computer system of claim 1, wherein the first plug-inenhances functionality of the first browser by communicating with thesecond plug-in on the second remote computer system over the network,the second plug-in being utilized to enhance functionality of the secondbrowser by communicating with the first plug-in.
 9. The client computersystem of claim 1, further comprising: a three-dimensional engine thatcreates a three-dimensional rendering of the shared game environment andthe game components.
 10. A computer communications method, comprising:receiving a signal from first and second remote computer systems over anetwork, the signal including components for display by the remotecomputer receiving the signal; executing a game having game parametersincluding a shared game environment displayed by the remote playercomputer systems, at least one game component, associated with each of aplurality of remote player computer systems, located in the shared gameenvironment and being movable relative to the shared game environment,utilizing the respective remote player computer system, game thresholdsbeing reached as a result of movement of the game components relative tothe shared game environment, and the player scores being updated whenthe game thresholds are reached; utilizing a first protocol tocommunicate at least a first of the game parameters over the network;and utilizing a second protocol to communicate at least a second of thegame parameters over the network.
 11. The computer communications methodof claim 10, further comprising: running a browser application residingon the second remote computer system, the browser having a view thatdisplays components received in the signal; and utilizing a plug-in onthe second remote computer system to enhance functionality of thebrowser.
 12. The computer communications method of claim 11, furthercomprising: rendering graphics with a graphical application residing onat least one of the remote computer systems, the graphical applicationutilizing graphics acceleration to render graphics; and embedding thegraphics rendered by the graphical application in the window of thebrowser utilizing the plug-in.
 13. The computer communications method ofclaim 12, further comprising: generating window management events for orby the browser; and communicating the window management events with thegraphical application.
 14. The computer communications method of claim12, further comprising: tracking user input events with the browser; andcommunicating the user input events with the graphical application. 15.The computer communications method of claim 10, wherein the remotecomputer systems are remote player computer systems, further comprising:utilizing a plurality of remote player computer systems to move aplurality of game components associated with the respective playercomputers in a shared game environment displayed by the respectiveremote player computer systems; storing a plurality of player scorescorresponding to the respective remote player computer systems; andupdating the player scores as game thresholds are reached as a result ofmovement of the game components relative to the shared game environment.16. The computer communications method of claim 15, further comprising:storing the shared game environment on a game server computer system;transmitting the shared game environment to the remote player computersystems; storing the player scores on the game server computer system;and transmitting the player scores to the remote player computersystems.
 17. The computer communications method of claim 16, wherein theshared game environment is a selected shared game environment among aplurality of shared game environments, further comprising: generating agame-specific URL; transmitting the game-specific URL to a selected oneof the remote computer systems; and utilizing the game-specific URL atthe selected remote computer system to at least view the selected gameenvironment.
 18. The computer communications method of claim 16, furthercomprising: storing a plurality of shared game environments on the gameserver computer system; and associating a respective party comprising arespective subset of the remote player computer systems with each sharedgame environment.
 19. The computer communications method of claim 18,further comprising: selecting a party move selector at one of the remoteplayer computer systems associated with a first one of the parties and afirst one of the shared game environments, to transmit a party movesignal from the respective remote player computer system to the servercomputer system; and in response to the party move signal, associatingall the remote player computer systems associated with the first partyin unison with a second one of the shared game environments.
 20. Thecomputer communications method of claim 15, further comprising: runninga first browser application residing on a first remote computer system,the first browser having a view that displays components received in thesignal; and utilizing a first plug-in on the first remote computersystem to enhance functionality of the browser, wherein the firstplug-in enhances functionality of the first browser by communicatingwith a second remote computer system over the network.
 21. The computercommunications method of claim 20, wherein the browser has browserfunctionality and the plug-in places a view of the shared gameenvironment in the browser, and the game has game functionality.
 22. Thecomputer communications method of claim 20, further comprising: runninga second browser application residing on a second remote computersystem, the second browser having a view that displays componentsreceived in the signal; and utilizing a second plug-in on the secondremote computer system to enhance functionality of the browser, whereinthe first plug-in enhances functionality of the first browser bycommunicating with the second plug-in on the second remote computersystem over the network.
 23. The computer communications method of claim15, wherein the shared game environment, the at least one gamecomponent, the movement of the at least one game component, the playerscores, and the game thresholds are game parameters, further comprising:utilizing a first protocol to communicate at least a first of the gameparameters over the network; and utilizing a second protocol tocommunicate at least a second of the game parameters over the network.24. The computer communications method of claim 15, further comprising:creating a three-dimensional rendering of the shared game environmentand the game components.
 25. A computer-readable medium having storedthereon a set of instructions which, when executed by a processor of acomputer, executes a communications method, comprising: receiving asignal from first and second remote computer systems over a network, thesignal including components for display by the remote computer receivingthe signal; executing a game having game parameters, including a sharedgame environment displayed by the remote player computer systems, atleast one game component, associated with each of a plurality of remoteplayer computer systems, located in the shared game environment andbeing movable relative to the shared game environment utilizing therespective remote player computer system, game thresholds being reachedas a result of movement of the game components relative to the sharedgame environment, and the player scores being updated when the gamethresholds are reached; utilizing a first protocol to communicate atleast a first of the game parameters over the network; and utilizing asecond protocol to communicate at least a second of the game parametersover the network.
 26. A network system, comprising: a plurality ofremote player computer systems connected to a network, a signal beingtransmitted from a first to a second of the remote player computersystems over the network, the signal including components for display bythe remote player computer receiving the signal; a shared gameenvironment displayed by the remote player computer systems; at leastone game component associated with each remote player computer systemlocated in the shared game environment at each remote player computersystem, and being movable relative to the shared game environmentutilizing the respective remote player computer system; a plurality ofplayer scores stored on a computer system, each player scorecorresponding to a respective one of the remote player computer systems,game thresholds being reached as a result of movement of the gamecomponents relative to the shared game environment, and the playerscores being updated when the game thresholds are reached, wherein theshared game environment, the at least one game component, the movementof the at least one game component, the player scores, and the gamethresholds are game parameters; a first protocol generator tocommunicate at least a first of the game parameters over the network;and a second protocol generator to communicate at least a second of thegame parameters over the network.